//Source file: D:\\Users\\afpa\\Documents\\workspace\\20-otarie\\src\\fr.afpa.biblio.metier\\Adherent.java

package fr.afpa.biblio.metier;

/**
 * @author pev
 * @version 1.0 Classe qui décrit les adherents de la bibliotheque
 * 
 */
public class Adherent extends Utilisateur {
	private String telephone = new String();
	private int nbMaxPrets = 3;
	private int dureeMaxPrets = 15;

	/**
	 * @param telephone
	 *            No de telephone de l'adherent
	 * @param nbMaxPrets
	 *            nombre maximum de prets autorises
	 * @param dureeMaxPrets
	 *            duree maximum d'un pret
	 * @throws BiblioExeception
	 *             si _idUtilisateur <1
	 * @throws InstantiationException , voir : {@link java.lang.Class#newInstance() java.lang.Class.newInstance()}.
	 * @throws IllegalAccessException , voir : {@link java.lang.Class#newInstance() java.lang.Class.newInstance()}.
	 * @roseuid 5240E4400265
	 */
	public Adherent(String telephone, int nbMaxPrets, int dureeMaxPrets) throws InstantiationException, IllegalAccessException, BiblioExeception {
		super();
		this.telephone = telephone;
		this.nbMaxPrets = nbMaxPrets;
		this.dureeMaxPrets = dureeMaxPrets;
	}

	/**
	 * @throws BiblioExeception 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 * 
	 */
	public Adherent() throws InstantiationException, IllegalAccessException, BiblioExeception {
		this(new String(), -1, -1);
		//TODO
		
		//_ID
		
		//_DEL
		
		//FIXME

	}

	/**
	 * @return
	 */
	public String getTelephone() {
		return telephone;
	}

	/**
	 * @param telephone
	 * @throws BiblioExeception
	 */
	public void setTelephone(String telephone) throws BiblioExeception {
		if (telephone == null) {
			throw new BiblioExeception(
					"La chaine de charact�re de telephone ne peut �tre consid�rer comme null");
		} else
			this.telephone = telephone;
	}

	/**
	 * @return
	 */
	public int getNbMaxPrets() {
		return nbMaxPrets;
	}

	/**
	 * @param nbMaxPrets
	 * @throws BiblioExeception
	 */
	public void setNbMaxPrets(int nbMaxPrets) throws BiblioExeception {
		if (nbMaxPrets == 0) {
			throw new BiblioExeception(
					"Le nombre de livres emprunt�s ne peut �tre �gal � null");
		} else
			this.nbMaxPrets = nbMaxPrets;
	}

	/**
	 * @return
	 */
	public int getDureeMaxPrets() {
		return dureeMaxPrets;
	}

	/**
	 * @param dureeMaxPrets
	 * @throws BiblioExeception
	 */
	public void setDureeMaxPrets(int dureeMaxPrets) throws BiblioExeception {
		if (dureeMaxPrets == 0) {
			throw new BiblioExeception(
					"La Dur�e maximale pour emprunter un livre dureeMaxPrets ne peut �tre �gal � null");
		} else
			this.dureeMaxPrets = dureeMaxPrets;
	}

	/**
	 * @return Boolean
	 * @roseuid 5240D69E0097
	 */
	public boolean isConditionPretAcceptees() {
		return true;
	}

	/**
	 * @return int
	 * @roseuid 5240D6DF006F
	 */
	public int getNbRetards() {
		return 0;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see fr.afpa.biblio.metier.Personne#toString()
	 */
	@Override
	public String toString() {
		return "Adherent [telephone=" + telephone + ", nbMaxPrets="
				+ nbMaxPrets + ", dureeMaxPrets=" + dureeMaxPrets
				+ ", toString()=" + super.toString() + "]";
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see fr.afpa.biblio.metier.Personne#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Adherent other = (Adherent) obj;
		if (dureeMaxPrets != other.dureeMaxPrets)
			return false;
		if (nbMaxPrets != other.nbMaxPrets)
			return false;
		if (telephone == null) {
			if (other.telephone != null)
				return false;
		} else if (!telephone.equals(other.telephone))
			return false;
		return true;
	}

}
